<?php
	/** sous fonctionnalité de gestion des joueurs d'un matche
	 * @author Sebastian Mosser
	 */

class sfManageConditions extends aSubFeature {


	public function __construct() {
		  $this->_acl = new AccessControlList(); 
      $this->_acl->setGranted(1, AccessControlList::$JUST_ME); // Entraineur
      $this->_acl->setGranted(3); // Secretariat
      $this->_acl->setGranted(7); // Administrateur système
		}


	public function check($teamId) {
	
		$perm = $this->_acl->isExposable(Login::getGroups());
		$aTeam = Team::read($teamId);
		
		if ($perm == AccessControlList::$JUST_ME) {
			if (! $aTeam->canEdit(Login::getLoginId())) {
				$page = <<<EOS
<h1> Une erreur est survenue ! </h1>
<div align="center">
<p> <span class="error">Vous n'êtes pas autorisé a faire des modifications dans cette équipe car vous n'en êtes pas l'administrateur.</span></p>
</div>
<p> Si vous pensez qu'il s'agit d'une erreur, contactez le secrétariat du club qui pourra vous autoriser à y acceder.</p>
<p> Pour pouvoir modifier une équipe, vous devez être déclaré : 
<ul>
  <li> Administrateur de l'équipe </li>
  <li> Administrateur de catégorie </li>
  <li> Membre du groupe <code> Secretariat </li>
  <li> Membre du groupe <code> Administrateur Système </code> </li>
</ul>
EOS;
				return $page;
			}
		}
		return True;
	}

	protected function run() {
		
		$id = PropRetriever::getProp($_POST,"id");
		if ($id == "")
			$id = PropRetriever::getProp($_GET,"id");
		
		try {
			$aMatche = Matche::read($id);
			$teamId = $aMatche->getTeamId();
		}
		catch(Exception $e) {
			$ans  = "<h1> Une erreur est survenue ! </h1>";
			$ans .= "<div align=\"center\"> <span class=\"error\">";
			$ans .= "Le match demandé n'existe pas !";
			$ans .= "</span></div>";
			return $ans;
		}
		
		$c = $this->check($teamId);
		if ($c === True)
			return $this->process($aMatche,$id);
		else
			return $c;
	}
	
	// $aMatche est une instance de Matche, mais pas une rèf.
	private function process($aMatche,$id) {
		$action = PropRetriever::getProp($_POST,"action");
		if ($action == "edit")
			return $this->editMatcheCondition($aMatche, $id);
		else
			return $this->displayform($aMatche,$id);
	}
	
	
	// $aMatche est une instance de matche 
	private function editMatcheCondition($aMatche, $id) {
		$ground = PropRetriever::getProp($_POST,"ground");
		$groundType = PropRetriever::getProp($_POST,"groundType");
		$length = PropRetriever::getInt($_POST,"length");
		$aMatche->setGround($ground);
		$aMatche->setGroundType($groundType);
		$aMatche->setLength($length);
		$aMatche->update();
		$aMatche = Matche::read($id);
		return $this->displayForm($aMatche, $id, 
															"Modification effectué avec succès");
	}
	
	private function displayForm($aMatche,$id,$text = "") {
		$matcheResume = $aMatche->displayShort();
			
		$length = $aMatche->getLength();
		$ground = $aMatche->getGround();
		$groundType = $aMatche->getGroundType();
		$groundOptions = Matche::getGroundAsList($ground);
		$groundTypeOptions = Matche::getGroundTypeAsList($groundType);

		$resultAction = "";
		if ($text != "") {
			$resultAction = "<h2> Résultat de l'action demandée </h2>";
			$resultAction .= "<div align=\"center\"><span class=\"error\">";
			$resultAction .= $text;
			$resultAction .= "</span></div>";
		}
		
		$returnButton = sfManageAMatche::getReturnButton($id);
		
		$page = <<<EOS
${matcheResume}
<br />
${returnButton}
<h1> Conditions de Jeu</h1>
<div align="center">
<form method="post" accept-charset="utf-8">
  <fieldset>
		<legend> Informations </legend>
		<br />
		<label> 
			<span>Durée : </span>
			<input type="text" name="length" class="edit" value="${length}"/>
			&nbsp; &nbsp;
		</label>
		<br />
		
		<label> 
			<span>Terrain : </span>
			<select name="ground" class="edit">
			${groundOptions}
			</select>
			&nbsp; &nbsp;
		</label>
		<br />
		
		<label> 
			<span>Type : </span>
			<select name="groundType" class="edit">
			${groundTypeOptions}
			</select>
			&nbsp; &nbsp;
		</label>
		<br />
		<br />
		<input type="hidden" name="id" value="$id" />
		<input type="hidden" name="action" value="edit" />
		<input type="submit" value="Enregistrer" class="edit" />
	</fieldset>
</form>
</div>

${resultAction}

EOS;
		return $page;
	
	}
	
	
}

?>